#ifndef __cons__
#define __cons__
class cons: public object {
    Object car, cdr;
    std::string to_string_(bool = true);

public:
    cons(Environment env): object(""), car(env->get_value("false")), cdr(env->get_value("false")) { }
    void set_car(Object obj) { car = obj; }
    void set_cdr(Object obj) { cdr = obj; }
    Object get_car() { return car; }
    Object get_cdr() { return cdr; }
    std::string to_string();
    std::string get_type() { return "#<Cons cell>"; }
    Object eval(Environment env);
};
typedef boost::shared_ptr<cons> Cons;
#endif
